package de.hska.util;

import static de.hska.util.EjbNames.ARTIKELVERWALTUNG_LOCAL_NAME;
import static de.hska.util.EjbNames.BESTELLVERWALTUNG_LOCAL_NAME;
import static de.hska.util.EjbNames.KUNDENVERWALTUNG_LOCAL_NAME;
import static de.hska.util.LogUtil.begin;
import static de.hska.util.LogUtil.end;

import javax.ejb.EJBException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import de.hska.artikelverwaltung.Artikelverwaltung;
import de.hska.bestellverwaltung.Bestellverwaltung;
import de.hska.kundenverwaltung.Kundenverwaltung;

public class JndiUtil {
	private static final Log LOG = LogFactory.getLog(JndiUtil.class);
	private static final boolean DEBUG = LOG.isDebugEnabled();

	
	/**
	 */
	public static Kundenverwaltung getKundenverwaltungLocal() {
		if (DEBUG) begin(LOG);
		
		Kundenverwaltung kv = null;
		try {
			final Context ctx = new InitialContext();
			kv = (Kundenverwaltung) ctx.lookup(KUNDENVERWALTUNG_LOCAL_NAME);
			ctx.close();
		}
		catch (NamingException e) {
			LOG.error(MessagesUtil.getMessage("error.internal.jndi.ejbNotFound", KUNDENVERWALTUNG_LOCAL_NAME));
			throw new EJBException(e);
		}
		
		if (DEBUG) end(LOG);
		return kv;
	}
	
	public static Bestellverwaltung getBestellverwaltungLocal() {
		if (DEBUG) begin(LOG);
		
		Bestellverwaltung bv = null;
		try {
			final Context ctx = new InitialContext();
			bv = (Bestellverwaltung) ctx.lookup(BESTELLVERWALTUNG_LOCAL_NAME);
			ctx.close();
		}
		catch (NamingException e) {
			LOG.error(MessagesUtil.getMessage("error.internal.jndi.ejbNotFound", BESTELLVERWALTUNG_LOCAL_NAME));
			throw new EJBException(e);
		}
		
		if (DEBUG) end(LOG);
		return bv;
	}
	
	
	/**
	 */
	public static Artikelverwaltung getArtikelverwaltungLocal() {
		if (DEBUG) begin(LOG);
		
		Artikelverwaltung av = null;
		try {
			final Context ctx = new InitialContext();
			av = (Artikelverwaltung) ctx.lookup(ARTIKELVERWALTUNG_LOCAL_NAME);
			ctx.close();
		}
		catch (NamingException e) {
			LOG.error(MessagesUtil.getMessage("error.internal.jndi.ejbNotFound", ARTIKELVERWALTUNG_LOCAL_NAME));
			throw new EJBException(e);
		}
		
		if (DEBUG) end(LOG);
		return av;
	}
}
